内容管理的数据模型设计
核心实体关系
知识付费平台的内容管理涉及三个核心实体的关联:课程(Course)、标签(Tag)、分类(Category)。
关联关系分析
| 关系 | 类型 | 说明 |
|---|---|---|
| 课程 ↔ 分类 | 多对一 | 一个课程属于一个分类,一个分类包含多个课程 |
| 课程 ↔ 标签 | 多对多 | 一个课程可以有多个标签,一个标签可以关联多个课程 |
| 分类 ↔ 分类 | 树形结构 | 分类支持多级嵌套(父分类-子分类) |
数据库表设计
-- 课程表
CREATE TABLE courses (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
category_id INT,
FOREIGN KEY (category_id) REFERENCES categories(id)
);
-- 标签表
CREATE TABLE tags (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL UNIQUE
);
-- 课程-标签关联表(多对多)
CREATE TABLE course_tags (
course_id INT,
tag_id INT,
PRIMARY KEY (course_id, tag_id),
FOREIGN KEY (course_id) REFERENCES courses(id),
FOREIGN KEY (tag_id) REFERENCES tags(id)
);
-- 分类表(支持树形结构)
CREATE TABLE categories (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
parent_id INT NULL,
FOREIGN KEY (parent_id) REFERENCES categories(id)
);
sql
API设计
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 获取课程详情(含标签和分类) | GET | /api/courses/:id | 返回课程+标签列表+分类信息 |
| 按分类筛选课程 | GET | /api/courses?categoryId=1 | 支持分类树查询 |
| 按标签筛选课程 | GET | /api/courses?tagId=1,2 | 支持多标签筛选 |
| 获取分类树 | GET | /api/categories/tree | 返回完整的分类树结构 |
↑